package com.lgcns.weather.util;

import java.util.ArrayList;

import android.view.View;
import android.view.ViewGroup;

/**
 * inflate 되어 부모 View에 add된 child view들을 보관하는 클래스.<br>
 * 만일 화면을 갱신하여 inflate를 다시 수행해야 할 경우, 기존에 추가된 view들을<br>
 * 모두 삭제해 주어야 한다.<br>
 * 그래서 이 클래스에서는 추가된 view들의 reference를 보관한다.
 */
public class InflatedViewHolder {
    /** 부모 view 목록 */
    private ArrayList<ViewGroup> parentViewGroupList;
    /** 자식 view 목록 */
    private ArrayList<View> childViewList;

    /**
     * 생성자.
     */
    public InflatedViewHolder() {
        parentViewGroupList = new ArrayList<ViewGroup>();
        childViewList = new ArrayList<View>();
    }

    /**
     * inflate된 view와 부모 view를 보관한다.
     * @param parent
     * @param child
     */
    public void add(ViewGroup parent, View child) {
        parentViewGroupList.add(parent);
        childViewList.add(child);
    }

    /**
     * holder 내에 보관하고 있는 모든 자식 view들을 그들의 부모 view에서<br>
     * 제거한다. 개별 view 단위로의 삭제는 지원하지 않는다. 
     */
    public void removeAll() {
        int length = parentViewGroupList.size();
        for (int i = 0; i < length; i++) {
            ViewGroup parent = parentViewGroupList.get(i);
            View child = childViewList.get(i);
            parent.removeView(child);
        }
        parentViewGroupList.clear();
        childViewList.clear();
    }
}